SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE Procedure [dbo].[SP_TTPROC_INTE_U99]    
/*------------------------------------------------------------*/    
/*---Empresa              : OFISIS S.A.                  -----*/    
/*---Cliente              : OFISIS S.A.                  -----*/    
/*---Sistema              : Interfase                    -----*/    
/*---M"dulo               : Empresa                      -----*/    
/*---Programa             : Reversi®n del Proceso        -----*/    
/*---        de Interfase          -----*/    
/*---Script               : ttproc_i.sql                 -----*/    
/*---Nombre SP            : SP_TTPROC_INTE_U99           -----*/    
/*---Desarrollado por     : D.Ch.B.                      -----*/    
/*---Fecha Creaci"n       : 13/08/2001                   -----*/    
/*---Base Datos           : Microsoft            -----*/    
/*---Versi"n              : 7.0                          -----*/    
/*---Invoca a SP          :                              -----*/    
/*------------------------------------------------------------*/    
/*---Modificado 1 por     : D.Ch.B.                      -----*/    
/*---Fecha Modificaci"n   : 06/11/2001                   -----*/     
/*---Detalle Modificaci"n : Para que elimine los ajustes -----*/    
/*---       redondeos     -----*/    
/*------------------------------------------------------------*/    
/*---Modificado 1 por     : D.Ch.B.                      -----*/    
/*---Fecha Modificaci"n   : 06/02/2004                   -----*/     
/*---Detalle Modificaci"n : Modificaci¢n para Interfase Linea --*/    
/*---            -----*/    
/*------------------------------------------------------------*/    
/*---Comentarios : La reversi¢n SOLO FUNCIONA  para procesos-----*/    
/*---              de Interfase Batchera    -----*/    
/*---                                                    -----*/    
/*------------------------------------------------------------*/    
/*---Drop Proc SP_TTPROC_INTE_U99                        ----*/    
/*---Grant all on SP_TTPROC_INTE_U99 to public           ----*/     
/*---SP_TTPROC_INTE_U99 '01' , 'OFITESO_VER5', 10    ----*/    
/*-----------------------------------------------------------*/    
@ISCO_EMPR   TD_VC_002,  /* C"digo de la Empresa */    
@ISCO_SIST        TD_VC_008,  /* Nomero de Proceso de Interfase*/    
@INNU_PROC        TD_IN_001   /* Nomero de Proceso de Interfase*/    

As    
Declare    
 @VDFE_TRAN TD_DT_001,     
 @VNNU_ANNO TD_IN_001,     
 @VNNU_MESE TD_IN_001,     
 @VSNU_ASTO_MAXI TD_VC_010,     
 @CSCO_EMPR TD_VC_002,     
 @CNNU_CNTB_EMPR TD_IN_001,     
 @CSCO_UNID_CNTB TD_VC_003,     
 @CSCO_OPRC_CNTB TD_VC_003    
    
Begin Transaction SP_TTPROC_INTE_U99    
    
Create Table #TWDETA_OPRC    
( CO_EMPR  Varchar(2) Null,     
  NU_CNTB_EMPR  Int Null,     
  CO_UNID_CNTB  Varchar(3) Null,     
  CO_OPRC_CNTB  Varchar(3) Null    
)    
    
    
Create Table #TWDETA_CONT    
( CO_EMPR  Varchar(2) Null,     
  NU_CNTB_EMPR  Int Null,     
  CO_UNID_CNTB  Varchar(3) Null,     
  CO_OPRC_CNTB  Varchar(3) Null,     
  NU_ANNO  Int Null,     
  NU_MESE  Int Null,     
  NU_ASTO  Varchar(10) Null    
)    
    
-- Creo indice especial para mejorar performance de temporal    
    
CREATE NONCLUSTERED INDEX IDX_TWDETA_CONT ON #TWDETA_CONT(CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE, NU_ASTO)    
WITH FILLFACTOR = 80    
    
-- Para cargar el temporal con los voucher a eliminar (Por eliminar ajuste por redondeo)    
Insert Into #TWDETA_CONT (CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE, NU_ASTO )    
Select Distinct CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE, NU_ASTO     
From OFICONT..TXMVTO_CNTB    
Where CO_EMPR = @ISCO_EMPR    
And   NU_PROC = @INNU_PROC    
    
-- Para cargar el temporal con las operaciones contables a actualizar (Operaciones que est n en el n£mero de proceso de interfase)    
Insert Into #TWDETA_OPRC (CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB)    
Select Distinct CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB    
From OFICONT..TXMVTO_CNTB    
Where CO_EMPR = @ISCO_EMPR    
And   NU_PROC = @INNU_PROC    
    
    
Select @VDFE_TRAN = FE_INIC     
From TTPROC_INTE    
Where CO_EMPR = @ISCO_EMPR    
And   CO_SIST = @ISCO_SIST    
And   NU_PROC = @INNU_PROC    
    
Select @VNNU_MESE = Datepart(month, @VDFE_TRAN)    
Select @VNNU_ANNO = Datepart(year,  @VDFE_TRAN)    
    
Delete OFICONT..TXMVTO_CNTB    
From OFICONT..TXMVTO_CNTB T1, #TWDETA_CONT T2    
Where  T1.CO_EMPR = T2.CO_EMPR     
And    T1.NU_CNTB_EMPR = T2.NU_CNTB_EMPR    
And    T1.CO_UNID_CNTB = T2.CO_UNID_CNTB    
And    T1.CO_OPRC_CNTB = T2.CO_OPRC_CNTB    
And    T1.NU_ANNO = T2.NU_ANNO    
And    T1.NU_MESE = T2.NU_MESE    
And    T1.NU_ASTO = T2.NU_ASTO    
And    T1.NU_PROC = @INNU_PROC    
    
If (@@ERROR != 0)    
    BEGIN    
      --RAISERROR 20001 "ERROR DE INSERCION "    
      ROLLBACK TRANSACTION SP_TTPROC_INTE_U99    
      RETURN    
    END    
    
Declare  CU_TTPROC_INTE_U99_1 Cursor    
For    
Select t1.CO_EMPR, t1.NU_CNTB_EMPR, t1.CO_UNID_CNTB, t1.CO_OPRC_CNTB     
From OFICONT..TCFECH_PROC t1, #TWDETA_OPRC t2    
Where t1.CO_EMPR = @ISCO_EMPR    
And   t1.NU_ANNO = @VNNU_ANNO    
And   t1.NU_MESE = @VNNU_MESE    
And   t1.CO_EMPR = t2.CO_EMPR     
And   t1.NU_CNTB_EMPR = t2.NU_CNTB_EMPR    
And   t1.CO_UNID_CNTB = t2.CO_UNID_CNTB     
And   t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB     
    
    
/* Abre Cursor de Interfase - Cabecera */    
Open CU_TTPROC_INTE_U99_1    
Fetch  CU_TTPROC_INTE_U99_1 Into    
@CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB    
    
While  ( @@FETCH_STATUS = 0)    
  Begin    
    If (@@FETCH_STATUS  < 0)    
        Begin    
            --RAISERROR 20001 "FIN DE ARCHIVO"    
     Close CU_TTPROC_INTE_U99_1    
     Deallocate CU_TTPROC_INTE_U99_1    
     Return    
        End    
    
 --Select @VSNU_ASTO_MAXI = Null    
 Select @VSNU_ASTO_MAXI = Isnull(Max(IsNull(NU_ASTO,'0')),0)    
        From OFICONT..TXMVTO_CNTB    
 Where CO_EMPR = @CSCO_EMPR    
 And   NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
 And   CO_UNID_CNTB = @CSCO_UNID_CNTB    
 And   CO_OPRC_CNTB = @CSCO_OPRC_CNTB     
 And   NU_ANNO = @VNNU_ANNO    
 And   NU_MESE = @VNNU_MESE    
    
        Update OFICONT..TCFECH_PROC    
 Set NU_ULTI_ASTO = Convert(Int, @VSNU_ASTO_MAXI )    
        Where Current Of CU_TTPROC_INTE_U99_1    
    
 If (@@ERROR != 0)    
     BEGIN    
       --RAISERROR 20001 "ERROR DE INSERCION "    
       ROLLBACK TRANSACTION SP_TTPROC_INTE_U99    
       Close CU_TTPROC_INTE_U99_1    
       Deallocate CU_TTPROC_INTE_U99_1    
       Return    
     END    
    
 Fetch  CU_TTPROC_INTE_U99_1 Into    
 @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB    
  End    
 Close CU_TTPROC_INTE_U99_1    
 Deallocate CU_TTPROC_INTE_U99_1    
    
 Update TTPROC_INTE    
 Set ST_PROC = 'F'    
 Where CO_EMPR = @ISCO_EMPR    
 And    NU_PROC   = @INNU_PROC            
    
  If (@@ERROR != 0)    
    BEGIN    
      --RAISERROR 20001 "ERROR DE INSERCION "    
      ROLLBACK TRANSACTION SP_TTPROC_INTE_U99    
      Return    
    END    
    
Commit Transaction     
    
    
/********************************* FIN ***********************************/
-----------------------------------------------------------
-- Type: Stored Procedure
-- Name: SP_TTPROC_INVE_D01
-----------------------------------------------------------



GO
